﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using knfUpdateDataLayer;
using System.Configuration;
using knfUpdateDataLayer.Aggiornamento;
using CalcoloTotali;

namespace ProceduraReportsConsole
{
    class Program
    {
        // Modifica di Prova
        private static  knfEntities _db = new knfEntities();

        static void Main(string[] args)
        {
            try {

                if (args.Length == 0)
                {
                    ScriviNelDb("ERROR", "Invoked ProceduraReportsConsole without arguments");
                    return;
                }

               string filePath = args[0];
               string executableName = System.Reflection.Assembly.GetExecutingAssembly().Location;
               string outputPath = System.IO.Path.GetDirectoryName(executableName);

               GestioneInputFile localGestioneFile = new GestioneInputFile(filePath);

               localGestioneFile.AnalizzaFilediInput();

               System.IO.File.Delete(filePath);

               // Aggiornamento Total

                Console.WriteLine("aggiorna totali");

                ProceduraTotali localTotali = new ProceduraTotali();
                localTotali.AggiornaTotaliPerAnno(2012);
                localTotali.AggiornaTotaliPerAnno(2011);
                localTotali.AggiornaTotaliPerAnno(2010);
                localTotali.AggiornaTotaliPerAnno(2009);

                Console.WriteLine("crea report");

                ProceduraReport localReport = new ProceduraReport();

                try
                {
                    localReport.GeneraReport();
                }
                catch (Exception ex)
                {
                    ScriviNelDb("ERROR", ex.Message);
                }


                ScriviNelDb("CLOSING", "Exit");

                localGestioneFile = null;
                localTotali = null;
                localReport = null;


            }
            catch (Exception ex){

                ScriviNelDb("ERROR", ex.Message);

            }

        }


        private static void ScriviNelDb(string section, string message)
        {
            ProceduraAggiornamento localProcedura = new ProceduraAggiornamento();
            localProcedura.ScriviNelDb(section, message);

            if (section == "ERROR" || section == "CLOSING")
            {
                localProcedura.ChiudiUltimaProceduraAperta();
            }

            localProcedura = null;
        }


    }
}
